package com.ruoyi.basic.service;

import com.ruoyi.basic.domain.Column;
import com.ruoyi.common.core.domain.TreeSelect;
import java.util.List;

/**
 * 栏目Service接口
 *
 * @author ruoyi
 * @date 2025-01-22
 */
public interface IColumnService {
    /**
     * 查询栏目
     *
     * @param id 栏目主键
     * @return 栏目
     */
    public Column selectColumnById(Long id);

    /**
     * 查询栏目列表
     *
     * @param column 栏目
     * @return 栏目集合
     */
    public List<Column> selectColumnList(Column column);

    /**
     * 查询栏目树结构列表
     *
     * @param column 栏目
     * @return 栏目树集合
     */
    public List<TreeSelect> selectColumnTreeList(Column column);

    /**
     * 构建前端所需要树结构
     *
     * @param columns 栏目列表
     * @return 树结构列表
     */
    public List<Column> buildColumnTree(List<Column> columns);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param columns 栏目列表
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildColumnTreeSelect(List<Column> columns);

    /**
     * 是否存在栏目子节点
     *
     * @param columnId 栏目ID
     * @return 结果 true 存在 false 不存在
     */
    public boolean hasChildByColumnId(Integer columnId);

    /**
     * 新增栏目
     *
     * @param column 栏目
     * @return 结果
     */
    public int insertColumn(Column column);

    /**
     * 修改栏目
     *
     * @param column 栏目
     * @return 结果
     */
    public int updateColumn(Column column);

    /**
     * 批量删除栏目
     *
     * @param ids 需要删除的栏目主键集合
     * @return 结果
     */
    public int deleteColumnByIds(Long[] ids);

    /**
     * 删除栏目信息
     *
     * @param id 栏目主键
     * @return 结果
     */
    public int deleteColumnById(Long id);

    /**
     * 修改栏目状态
     *
     * @param column 栏目
     * @return 结果
     */
    public int changeStatus(Column column);

    List<Column> selectDistinctTags(String columnValue);
}